package dao

// 这是 PmsProductAttributeCategory 的全局公开dao对象，被service层调用!
var PmsProductAttributeCategoryDao = pmsProductAttributeCategoryDao{}

// 这是 pms_product_attribute_category表 的实体类
type PmsProductAttributeCategory struct {
	AttributeCount int32  `json:"attribute_count" form:"attribute_count" v:"attribute_count"` // 属性数量
	Id             int64  `json:"id" form:"id" v:"id"`
	Name           string `json:"name" form:"name" v:"name"`
	ParamCount     int32  `json:"param_count" form:"param_count" v:"param_count"` // 参数数量
}

// 注意:这是 PmsProductAttributeCategory 的私有dao对象，只能在dao层内使用!
type pmsProductAttributeCategoryDao struct {
	InsertTemplate  func(arg PmsProductAttributeCategory) (int64, error)  //插入一条记录
	UpdateTemplate  func(arg PmsProductAttributeCategory) (int64, error)  //更新一条记录
	DeleteTemplate  func(id int64) (int64, error)                         `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate  func(id int64) (PmsProductAttributeCategory, error)   `args:"id"` //根据传入的主键获取一条记录
	List            func(arg Page) ([]PmsProductAttributeCategory, error) //分页查询
	GetListWithAttr func() (PmsProductAttributeCategoryItem, error)
}

/*
// 这是 pms_product_attribute_category 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type PmsProductAttributeCategoryPostman struct {
attribute_count
id
name
param_count

}*/

// 这是 pms_product_attribute_category 表的批量请求参数
type PmsProductAttributeCategoryReq struct {
	List []PmsProductAttributeCategory `json:"list" form:"list"`
}

//包含有分类下属性
type PmsProductAttributeCategoryItem struct {
	Id   int64                    `json:"id" form:"id" v:"id"`       // PmsProductAttributeCategory的Id
	Name string                   `json:"name" form:"name" v:"name"` //PmsProductAttributeCategory的Name
	List []PmsProductAttributeRes `json:"list" form:"list"`          //商品属性列表
}

type PmsProductAttributeRes struct {
	FilterType                 int32  `json:"filter_type" form:"filter_type"`
	HandleAddStatus            int32  `json:"handle_add_status" form:"handle_add_status"`
	Id                         int64  `json:"attr_id" form:"attr_id"`
	InputList                  string `json:"input_list" form:"input_list"`
	InputType                  int32  `json:"input_type" form:"input_type"`
	Name                       string `json:"attr_name" form:"attr_name"`
	ProductAttributeCategoryId int64  `json:"product_attribute_category_id" form:"product_attribute_category_id"`
	RelatedStatus              int32  `json:"related_status" form:"related_status"`
	SearchType                 int32  `json:"search_type" form:"search_type"`
	SelectType                 int32  `json:"select_type" form:"select_type"`
	Sort                       int32  `json:"sort" form:"sort"`
	Types                      int32  `json:"types" form:"types"`
}
